package a03;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Component
public class LifeCycleBean {

    public LifeCycleBean() {
        System.out.println("构造函数........");
    }

    /**
     * 对于String类型的对象，@Autowired不会注入。可以使用@Value来注入
     * @param javaHome
     */
    @Autowired
    public void inject(@Value("${JAVA_HOME}") String javaHome){
        System.out.println("依赖注入阶段>>>" + javaHome);
    }

    @PostConstruct
    public void postConstruct() {
        System.out.println("初始化阶段....");
    }

    /**
     * 比如在context关闭，应用正常停止的时候会执行
     */
    @PreDestroy
    public void preDestroy() {
        System.out.println("销毁前....");
    }

}
